package cn.hospital.dao;

import cn.hospital.entity.ClinicalDataQuery;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface ClinicalDataQueryMapper {

    /**
     * 根据结束时间查询有效的审核数据
     * @param map map集合（结束时间，页码，每页的条数）
     * @return
     */
    List<ClinicalDataQuery> findByEffective(Map<String, Object> map);

    /**
     * 根据结束时间查询有效的审批数据的数量
     * @param map 集合（结束时间）
     * @return
     */
    Long findByCountEffective(Map<String, Object> map);

    /**
     * 根据结束时间查询无效的审核数据
     * @param map map集合（结束时间，页码，每页的条数）
     * @return
     */
    List<ClinicalDataQuery> findByInvalid(Map<String, Object> map);

    /**
     * 根据结束时间查询无效的审批数据的数量
     * @param map 集合（结束时间）
     * @return
     */
    Long findByCountInvalid(Map<String, Object> map);

    /**
     * 根据结束时间查询有效的正在审批数据的数量
     * @param map 集合（结束时间）
     * @return
     */
    Long findByCountEffectiveInExamination(Map<String, Object> map);

    /**
     * 添加需要审核的查询信息
     * @param clinicalDataQuery 查询实体类
     * @return
     */
    Integer insertBy(ClinicalDataQuery clinicalDataQuery);

    /**
     * 删除方法，根据查询信息id删除查询信息
     * @param queryConditionsId
     * @return
     */
    Integer deleteByQueryConditionsId(String queryConditionsId);

    /**
     * 根据查询信息id，查询该条查询信息
     * @param queryConditionsId
     * @return
     */
    ClinicalDataQuery updateByQueryConditionsId(String queryConditionsId);

    /**
     * 修改有效时间，根据查询信息id修改有效时间
     * @param queryConditionsId
     * @param endtime
     * @return
     */
    Integer updateByEndTime(@Param("queryConditionsId") String queryConditionsId, @Param("endtime") String endtime);

    /**
     * 有效的审核中
     * @param map
     * @return
     */
    List<ClinicalDataQuery> selectByAuditEffective(Map<String, Object> map);

    /**
     * 有效的审核中的数量
     * @param map
     * @return
     */
    Long selectByAuditEffectiveCount(Map<String, Object> map);

    /**
     * 根据查询条件id，修改查询信息的状态
     *
     * @param clinicalDataQuery
     * @return
     */
    Integer updateStateByqueryConditionsId(ClinicalDataQuery clinicalDataQuery);
}